package thread6fQuitThread;

/**
 * Created with IntelliJ IDEA
 * Description:线程等待
 * 原因：因为操作系统对线程是随机调度的，（抢占式执行），线程等待可以用编程的手段保证每一个线程的执行顺序
 * User:34398
 * Date:2024-07-17
 * Time:9:14
 */


public class demo7_Join {
    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            for (int i = 0; i < 3; i++) {
                System.out.println("这是线程T");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });


        t.start();
        Thread.sleep(4000);



        System.out.println("main线程开始等待");

        /**如果要等待的线程已经结束，不会触发主线程的阻塞*/
        //任何线程之间都是可以相互等待的

        //一个线程可以等待多个线程
        //多个线程等待一个线程都是可以的
      //  t.join();//等t结束，这里的等待是死的，只要t不结束，主线程就一直处在阻塞状态（不推荐用）
        t.join(1000);//单位是毫秒
        /*因为被等待的t如果有bug无法结束，主线程也会受到牵连，导致其他功能无法正常运行*/

        System.out.println("main线程等待结束");
    }
}
